// 往仓库存储数据方法集合
import getTalkSessionId from '@/utils/getTalkSessionId.js'
import {isEmpty} from "../common/util";

/**
 * 气泡类型 type 'send_search' -> 双气泡（显示用户问题和机器人回答气泡）
 *               'single_bubble' -> 单气泡（显示机器人回答气泡）
 */

/**
 * 问答查询 通过文本查询
 * @param {*} vue 当前vue对象
 * @param {*} queryText 文本
 * @param {*} type 气泡类型
 */
export function setTalkAnswers(vue, queryText, type = 'send_search') {
  const talkSessionId = getTalkSessionId();
  const params = {
    type,
    "inputValue": queryText,
    talkSessionId,
    "data": null
  }
  vue.$store.commit('setQuestionsAnswersData', params);
  vue.$store.dispatch('asyncGetTalkAnswers', {
    categoryList: vue.$store.state.categoryList,
    queryText,
    showAll: false,
    robotName: vue.$store.state.robotInfo.robotName,
    talkSessionId,
    switchCategory: false
  });
}
/**
 * 清理消息
 * @param {*} vue 当前vue对象
 *
 */
export function clearMsg(vue) {
  vue.$store.commit('clearQuestionsAnswersData');
}

/**
 * 问答查询 通过文本查询
 * @param {*} vue 当前vue对象
 * @param {*} usernameOrDept 用户名或者组织名
 * @param {*} type 气泡类型
 */
export function setQueryUserOrDeptAnswers(vue, userNameOrDept, type = 'send_search') {
  const talkSessionId = getTalkSessionId();
  const params = {
    type,
    "inputValue": userNameOrDept,
    talkSessionId,
    "data": null
  }
  vue.$store.commit('setQuestionsAnswersData', params);
  vue.$store.dispatch('asyncGetQueryUserOrDeptAnswers', {
    "userName": userNameOrDept,
    "orgName": userNameOrDept,
    "size": 15,
    talkSessionId
  });
}


/**
 * 通过id查询内容
 * @param {*} vue 当前vue对象
 * @param {*} id 查询id
 * @param {*} queryText 查询文本
 * @param {*} type 气泡类型
 */
export function setQueryById(vue, id, queryText, type = 'send_search') {
  const talkSessionId = getTalkSessionId();
  const params = {
    type,
    "inputValue": queryText,
    talkSessionId,
    "data": null
  }
  vue.$store.commit('setQuestionsAnswersData', params);
  vue.$store.dispatch('asyncQueryById', {
    id,
    robotName: vue.$store.state.robotInfo.robotName,
    talkSessionId,
    switchCategory: false
  });
}

/**
 * 问答根据路径查询
 * @param {*} vue 当前vue对象
 * @param {*} category 题库类型
 * @param {*} level1Title 一级科目
 * @param {*} queryText 查询文本
 * @param {*} type 气泡类型
 */
export function setQueryByPath(vue, item, queryText, type = 'send_search') {
  const talkSessionId = getTalkSessionId();
  const params = {
    type,
    "inputValue": queryText,
    talkSessionId,
    "data": null
  }
  vue.$store.commit('setQuestionsAnswersData', params);
  vue.$store.dispatch('asyncQueryByPath', {
    category:item.category,
    level1Title:item.level1Title,
    level2Title:item.level2Title,
    level3Title:item.level3Title,
    robotName: vue.$store.state.robotInfo.robotName,
    talkSessionId,
    switchCategory: false
  });
}

/**
 * 查询业务数据
 * @param {*} vue 当前vue对象
 * @param {*} asyncFn 仓库异步请求的方法名称
 * @param {*} queryText 查询文本
 * @param {*} type 气泡类型
 */
export function setBusiness(vue, asyncFn, queryText, type = 'send_search') {
  const talkSessionId = getTalkSessionId();
  const params = {
    type,
    "inputValue": queryText,
    talkSessionId,
    "data": null
  }
  vue.$store.commit('setQuestionsAnswersData', params);
  vue.$store.dispatch(asyncFn, {talkSessionId});
}

/**
 * 设置自定义气泡
 * @param {*} vue 当前vue对象
 * @param {*} data 展示数据 {'type': '类型', 'data': '数据'}
 * @param {*} rhPlate 哪个板块
 * @param {*} scrollTop 滑动的距离 或者是否需要滑动 不传或传的值是假值，则是滑动到底部，反之
 * @param {*} type 气泡类型
 */
export function setCustomBubble(vue, data, rhPlate, scrollTop, type = 'single_bubble') {
  const params = {
    type,
    rhPlate,
    scrollTop,
    data
  }
  vue.$store.commit('setQuestionsAnswersData', params);
}

/**
 * 设置足迹气泡
 * @param {*} vue 当前vue对象
 * @param {*} queryText 文本
 * @param {*} type 气泡类型
 */
export function setFootPrint(vue, queryText, time, type = 'send_search') {
  const talkSessionId = getTalkSessionId();
  const params = {
    type,
    talkSessionId,
    "inputValue": queryText,
    "data": null
  }
  vue.$store.commit('setQuestionsAnswersData', params);
  vue.$store.dispatch('asyncFootPrint', {time, talkSessionId});
}

/**
 * 查询工单信息在气泡框中显示
 * @param {*} vue 当前vue对象
 * @param {*} workOrderName 工单名称
 * @param {*} workOrderType 工单类型
 * @param {*} type 气泡类型
 */
export function setQueryTaskList(vue, workOrderName, workOrderType, type = 'send_search') {
  const talkSessionId = getTalkSessionId();
  const params = {
    type,
    "inputValue": workOrderName,
    talkSessionId,
    "data": null
  }
  vue.$store.commit('setQuestionsAnswersData', params);
  vue.$store.dispatch('asyncQuestionsAnswersData', {
    "type": workOrderType,
    "page": 1,
    "pageSize": 999,
    talkSessionId,
    workOrderName
  });
}

/**
 * 刷新气泡框工单内容
 * @param {*} vue 当前vue对象
 * @param {*} workOrderName 工单名称
 * @param {*} workOrderType 工单类型
 */
export function setQueryTaskListRefresh(vue, workOrderName, workOrderType) {
  const talkSessionId = getTalkSessionId();
  vue.$store.dispatch('asyncQuestionsAnswersData', {
    "type": workOrderType,
    "page": 1,
    "pageSize": 999,
    talkSessionId,
    workOrderName
  });
}

/**
 * 问答查询 通过文本查询
 * @param {*} vue 当前vue对象
 * @param {*} username 用户名
 * @param {*} ygid 编号
 * @param {*} size 数量
 * @param {*} type 气泡类型
 */
export function setQueryUsers(vue, username, ygid, size, type = 'send_search') {
  const talkSessionId = getTalkSessionId();
  const params = {
    type,
    "inputValue": username,
    talkSessionId,
    "data": null
  }

  const dispatchParams = {
    "userName": username,
    "size": size,
    talkSessionId
  }

  if (!isEmpty(ygid) && ygid.length >= 1) {
    dispatchParams.ygId = ygid
  }

  vue.$store.commit('setQuestionsAnswersData', params);
  vue.$store.dispatch('asyncQueryUsers', dispatchParams);
}

/**
 * 问答查询 通过文本查询
 * @param {*} vue 当前vue对象
 * @param {*} orgName 组织名
 * @param {*} size 数量
 * @param {*} type 气泡类型
 */
export function setQueryDepts(vue, orgName, size, type = 'send_search') {
  const talkSessionId = getTalkSessionId();
  // 如果为空 给气泡一个默认值
  if (isEmpty(orgName)) {
    orgName = '所在支部';
  }

  const params = {
    type,
    "inputValue": orgName,
    talkSessionId,
    "data": null
  }
  vue.$store.commit('setQuestionsAnswersData', params);
  vue.$store.dispatch('asyncQueryDepts', {
    "orgName": orgName,
    "size": size,
    talkSessionId
  });
}



 /**
 * 智学快捷导航栏信息
 * @param {*} vue 当前vue对象
 * @param {*} queryText 文本
 */
export function setQuickNavigation(vue, queryText) {
  const talkSessionId = getTalkSessionId();
  vue.$store.dispatch('asyncQuickNavigation', {
    categoryList: vue.$store.state.categoryList,
    queryText,
    showAll: true,
    robotName: vue.$store.state.robotInfo.robotName,
    talkSessionId,
    switchCategory: true
  });
}

/**
 * 智能巡检信息查询
 * @param vue 当前vue对象
 * @param itemName 查询内容
 * @param type 查询类型
 * @param answerType 机器人返回类型
 */
export function setQueryInTellingPatrolInspect(vue, itemName, answerType, type = 'send_search') {
  const talkSessionId = getTalkSessionId();
  const params = {
    type,
    "inputValue": itemName,
    talkSessionId,
    "data": null
  }
  vue.$store.commit('setQuestionsAnswersData', params);

  const param = {
    talkSessionId,
    type: answerType
  }
  vue.$store.dispatch('asyncInTellingPatrolInspect',param);
}

/**
 * 智办工单信息查询
 * @param vue 当前vue对象
 * @param inputValue 查询信息
 * @param type 查询类型
 */
export function setSearchTaskList(vue, inputValue, type = 'send_search') {
  const talkSessionId = getTalkSessionId();
  const params = {
    type,
    "inputValue": inputValue,
    talkSessionId,
    "data": null
  }
  vue.$store.commit('setQuestionsAnswersData', params);

  const param = {
    page: 1,
    pageSize: 10,
    queryText: inputValue,
    talkSessionId,
  }

  vue.$store.dispatch('asyncWorkOrderQuestionsAnswersData',param);
}

/**
 * 智说信息查询
 * @param vue 当前vue对象
 * @param inputValue 查询信息
 * @param type 查询类型
 */
export function setSearchZS(vue, inputValue, type = 'send_search') {
  const talkSessionId = getTalkSessionId();
  const params = {
    type,
    "inputValue": inputValue,
    talkSessionId,
    "data": null
  }
  vue.$store.commit('setQuestionsAnswersData', params);

  const param = {
    inputValue,
    talkSessionId,
  }

  vue.$store.dispatch('asyncSearchZSQuestionsAnswersData',param);
}
/**
 * 智能巡检、用章申请权限判断提示信息
 * @param vue 当前vue对象
 * @param inputValue 查询信息
 * @param type 查询类型
 */
export function setRoleMsg(vue, inputValue, type = 'send_search') {
  const talkSessionId = getTalkSessionId();
  const params = {
    type,
    "inputValue": inputValue,
    talkSessionId,
    "data": null
  }
  vue.$store.commit('setQuestionsAnswersData', params);

  const param = {
    inputValue,
    talkSessionId,
  }

  vue.$store.dispatch('asyncRoleMsg',param);
}
